package com.zky.gulimall.order.vo;

import com.baomidou.mybatisplus.core.metadata.OrderItem;
import lombok.Data;
import org.springframework.util.CollectionUtils;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

/**
 * @Description 订单确认
 * @Author 张开源
 * @Date 2022/12/9 16:28
 * @Version 1.0
 **/
@Data
public class OrderConfirmVo {

    /**
     * 地址信息
     */
    private List<MemberAddressVo> address;

    /**
     * 所有选中的购物项
     */
    private List<OrderItemVo> items;

    //发票信息,暂无功能

    /**
     * 积分
     */
    private Integer integration;

    /**
     * 应付价格
     */
    private BigDecimal payPrice;


    /**
     * 放重复令牌，防止下单时网络原因重复点击提交订单
     */
    private String orderToken;


    /**
     * 是否有货
     */
    private Map<Long, Boolean> stocks;


    /**
     * 订单总额
     */
    public BigDecimal getTotal() {
        return getPrice();
    }

    public BigDecimal getPayPrice() {
        BigDecimal price = getPrice();
        //暂无优惠功能
        return price;
    }

    private BigDecimal getPrice() {
        BigDecimal decimal = new BigDecimal(0);
        //计算价格
        if (!CollectionUtils.isEmpty(this.items)) {
            for (OrderItemVo item : items) {
                BigDecimal multiply = item.getPrice().multiply(new BigDecimal(String.valueOf(item.getCount())));
                decimal = decimal.add(multiply);
            }
        }
        return decimal;
    }

    /**
     * 商品件数
     *
     * @return
     */
    public Integer getCount() {
        Integer count = 0;
        if (!CollectionUtils.isEmpty(this.items)) {
            for (OrderItemVo item : items) {
                count += item.getCount();
            }
        }
        return count;
    }

}
